#pragma once

#include <Arduino.h>
#include <SoftwareSerial.h>

void print();
void espPrint();

template<typename T, typename ...Args>
void print(const T& t, const Args& ... args) {
    Serial.print(t);
    print(args...);
}

template<typename ...Args>
void println(const Args& ... args) {
    print(args...);
    Serial.println();
}

extern SoftwareSerial espSerial;

template<typename T, typename ...Args>
void espPrint(const T& t, const Args& ... args) {
    espSerial.print(t);
    espPrint(args...);
}

template<typename ...Args>
void espPrintln(const Args& ... args) {
    espPrint(args...);
    espSerial.println();
}